﻿Imports System.Windows.Forms
Imports DNP.GestionComercial.BE
Imports DNP.GestionComercial.BL
Imports DNP.GestionComercial.Util
Imports DNP.GestionComercial.FormBase
Public Class frmManClientes
    Inherits DNP.GestionComercial.FormBase.frmFormBase

#Region "Declaracion de Variables"

    Dim oMsg As New sisMensaje
    Dim _frmManteRepresentantes As DNP.GestionComercial.FRM.frmMantRepresentantes

#End Region

#Region "Iniciar Pagina"

    Public Sub New()

        ' Llamada necesaria para el diseñador.
        InitializeComponent()
        lblTitulo.Text = "Mantenimiento de Clientes"
        Me.tbpLista.Text = "Lista de Clientes"
        InicializarControles()

        Listar()
        'LlenaDetalle(0)

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    End Sub

    Private Sub InicializarControles()

        Dim obeRespuesta As New RespuestaBE
        Dim lstParametrica As New List(Of ParametricaBE)
        Dim lstCargo As New List(Of ParametricaBE)
        Dim oblParametrica As New ParametricaBL
        txtCodigo.Enabled = False
        gbxEntidad.Visible = True
        txtEntidad.Visible = True
        txtEntidad.Enabled = True

        lblEntidad.Visible = True
        lblEntidad.Text = "Cliente"


        ' cargar tipo de documento

        obeRespuesta = oblParametrica.listarParametricas(1)

        If obeRespuesta.Respuesta Then
            lstParametrica = CType(obeRespuesta.ValorRertono, List(Of ParametricaBE))
            sisFunciones.Load_Combo(cmbTipoDoc, lstParametrica, "NPAR_CODIGO", "CPAR_VALOR", False, 0)
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)

        End If

        ' cargar ubigeo
        Dim oblUbigeo As New UbigeoBL
        Dim lstDepartamentos As New List(Of UbigeoBE)
        sisFunciones.Carga_ComboFromEnum(cmbEstado, GetType(sisEnum.EstadoBD))


        obeRespuesta = oblUbigeo.ObtenerDepartamentos()

        If obeRespuesta.Respuesta Then
            lstDepartamentos = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
            sisFunciones.Load_Combo(cmbDepartamento, lstDepartamentos, "UGEO_DEPARTAMENTO", "UGEO_NOMBRE", False, "00")
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)

        End If

        mostrartipodocumento()
    End Sub

#End Region

#Region "Funciones"

    Private Sub FormatGrid()

        grdLista.AutoGenerateColumns = False
        grdLista.Columns.Clear()
        grdLista.Columns.Add("NCLI_CODIGO", "Código")
        grdLista.Columns.Add("DES_TIPO_DOC", "Tipo Documento")
        grdLista.Columns.Add("CCLI_DOCUMENTO", "Nro Documento")
        grdLista.Columns.Add("NOMBRECLIENTE", "Cliente")
        grdLista.Columns.Add("CCLI_DIRECCION", "Dirección")
        grdLista.Columns.Add("CCLI_TLFNO", "Teléfono")
        grdLista.Columns.Add("CCLI_EMAIL_01", "E-mail")

        grdLista.Columns(0).DataPropertyName = "NCLI_CODIGO"
        grdLista.Columns(1).DataPropertyName = "DES_TIPO_DOC"
        grdLista.Columns(2).DataPropertyName = "CCLI_DOCUMENTO"
        grdLista.Columns(3).DataPropertyName = "NOMBRECLIENTE"
        grdLista.Columns(4).DataPropertyName = "CCLI_DIRECCION"
        grdLista.Columns(5).DataPropertyName = "CCLI_TLFNO"
        grdLista.Columns(6).DataPropertyName = "CCLI_EMAIL_01"

        grdLista.Columns(0).Width = 60
        grdLista.Columns(1).Width = 80
        grdLista.Columns(2).Width = 100
        grdLista.Columns(3).Width = 250
        grdLista.Columns(4).Width = 160
        grdLista.Columns(5).Width = 60
        grdLista.Columns(6).Width = 60

        grdLista.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter


        grdLista.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

    End Sub

    Private Sub LimpiarControles()

        limpiarControlesForm(Me)
        'cmbDepartamento.SelectedValue = "00"
        'cmbProvincia.SelectedValue = "00"
        'cmbDistrito.SelectedValue = "00"

    End Sub

#End Region

#Region "Accion Botones"

    Protected Overrides Sub tsbSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()
    End Sub

    Protected Overrides Sub tsbListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Listar()
    End Sub

    Protected Overrides Sub tsbNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        LimpiarControles()
        cmbTipoDoc.Focus()
        tbcMantenimiento.SelectedIndex = 1
        cmbEstado.SelectedIndex = 1
        tsbGuardar.Visible = True
    End Sub

    Protected Overrides Sub tsbGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        If validar() Then

            If oMsg.showMsgQuestion("msgQuestionGuardar") = DialogResult.Yes Then
                Guardar()
            End If

        End If

    End Sub

    Protected Overrides Sub grdLista_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        LlenaDetalle(0)

    End Sub

    Protected Overrides Sub tsbAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Protected Overrides Sub tsbEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim intFila
        If grdLista.RowCount = 0 Then
            Return
        End If
        Try
            If grdLista.Rows(0).Cells(0).Value.ToString().Trim() Is Nothing Or _
                grdLista.Rows(0).Cells(0).Value.ToString().Trim() = "0" Then
                Return
            End If
        Catch ex As Exception
            Return
        End Try
        intFila = grdLista.CurrentRow.Index
        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                Dim codigo As Integer = CType(grdLista.Rows(intFila).Cells(0).Value.ToString().Trim(), Integer)

                If (oMsg.showMsgQuestion("msgQuestionDelete") = DialogResult.Yes) Then
                    Eliminar(codigo)
                End If
            End If
        End If

    End Sub

#End Region

#Region "Operaciones"

    Private Sub Listar()

        Dim oRespuesta As New RespuestaBE
        Dim lst As New List(Of ClienteBE)
        Dim oParametro As New PARAMETROBE

        oParametro.PARAMETRO01 = txtEntidad.Text
        oRespuesta = New ClienteBL().ListarTodos(oParametro)

        If oRespuesta.Respuesta Then

            FormatGrid()
            grdLista.DataSource = oRespuesta.ValorRertono 'olstEntidad
            grdLista.Refresh()

        Else
            oMsg.showMsgWarning(oRespuesta.Mensaje)
            MsgBox(oRespuesta.Mensaje)

        End If

    End Sub

    Private Function validar() As Boolean
        Return True
    End Function

    Private Sub Guardar()

        Dim obeEntidad As New ClienteBE

        'obeEntidad.CAUDI_USR_INS = "u60546"
        'obeEntidad.DAUDI_FEC_INS = Date.Now
        If Trim(txtCodigo.Text) = "" Then
            obeEntidad.NCLI_CODIGO = 0
        Else
            obeEntidad.NCLI_CODIGO = CInt(txtCodigo.Text)
        End If
        With obeEntidad


            .NCLI_TIPO_DOC = cmbTipoDoc.SelectedValue
            .CCLI_DOCUMENTO = txtNroDoc.Text
            .CCLI_NOMBRE = txtNombre.Text
            .CCLI_APELLIDO = txtApellido.Text
            .CCLI_TLFNO = txtTelefono.Text
            .CCLI_TLFNO_CEL = txtCelular.Text
            .CCLI_EMAIL_01 = txtEmail1.Text
            .CCLI_EMAIL_02 = txtEmail2.Text
            .CCLI_UBIGEO = cmbDepartamento.SelectedValue + cmbProvincia.SelectedValue + cmbDistrito.SelectedValue
            .CCLI_DIRECCION = txtDireccion.Text
            .CCLI_ESTADO = cmbEstado.SelectedValue
            .CCLI_RAZONSOCIAL = txtRazonSocial.Text
            '.DAUDI_FEC_INS = Date.Now
            '.CAUDI_USR_INS = "u60546"

        End With




        If (objListaError.intNumError > 0) Then
            showError()
            objListaError.intNumError = 0
        Else
            Dim oblEntidad As New ClienteBL
            Dim orespuesta As New RespuestaBE
            orespuesta = oblEntidad.Guardar(obeEntidad, "U60546")
            If orespuesta.Respuesta Then
                txtCodigo.Text = orespuesta.Mensaje
                oMsg.showMsgInformation("msgExitoGuardar")
                Listar()
                tbcMantenimiento.SelectedIndex = 0
            Else
                oMsg.showMsgWarning("msgErrorGuardar")
            End If

        End If



    End Sub

    Private Sub Eliminar(ByVal codigo As Integer)

        Dim oParametro As New PARAMETROBE
        Dim oRespuesta As New RespuestaBE

        oParametro.PARAMETRO01 = codigo
        Dim usuario As String = "U60546"

        oRespuesta = New ClienteBL().Eliminar(oParametro, usuario)

        If oRespuesta.Respuesta Then
            txtCodigo.Text = oRespuesta.Mensaje
            oMsg.showMsgInformation("msgExitoEliminar")
            Listar()
            tbcMantenimiento.SelectedIndex = 0

        Else
            oMsg.showMsgWarning("msgErrorEliminar")

        End If

    End Sub

    Private Sub LlenaDetalle(ByVal intTab As Integer)

        LimpiarControles()

        Dim intFila As Integer = -1
        If grdLista.RowCount = 0 Then
            Return
        End If

        intFila = grdLista.CurrentRow.Index

        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                '_strAccion = _Update
                If intTab >= 0 Then
                    tbcMantenimiento.SelectedIndex = intTab
                    txtCodigo.Text = grdLista.Rows(intFila).Cells(0).Value.ToString().Trim()
                    Obtener(txtCodigo.Text)
                    tsbGuardar.Visible = True
                End If
            End If
        End If

    End Sub

    Private Sub Obtener(ByVal codigo As String)

        If codigo <> "0" Then

            Dim oRespuesta As New RespuestaBE
            Dim obeEntidad As New ClienteBE

            oRespuesta = New ClienteBL().Obtener(codigo)

            If oRespuesta.Respuesta Then

                obeEntidad = CType(oRespuesta.ValorRertono, ClienteBE)

                With obeEntidad
                    txtCodigo.Text = CStr(.NCLI_CODIGO)

                    cmbTipoDoc.SelectedValue = .NCLI_TIPO_DOC
                    txtNroDoc.Text = .CCLI_DOCUMENTO
                    txtNombre.Text = .CCLI_NOMBRE
                    txtApellido.Text = .CCLI_APELLIDO
                    txtTelefono.Text = .CCLI_TLFNO
                    txtCelular.Text = .CCLI_TLFNO_CEL
                    txtEmail1.Text = .CCLI_EMAIL_01
                    txtEmail2.Text = .CCLI_EMAIL_02
                    '= .CPER_UBIGEO
                    txtDireccion.Text = .CCLI_DIRECCION

                    Try
                        cmbDepartamento.SelectedValue = .CCLI_UBIGEO.Substring(0, 2)
                    Catch ex As Exception
                        cmbDepartamento.SelectedValue = "00"
                    End Try
                    Try
                        cmbProvincia.SelectedValue = .CCLI_UBIGEO.Substring(2, 2)
                    Catch ex As Exception
                        cmbProvincia.SelectedValue = "00"
                    End Try
                    Try
                        cmbDistrito.SelectedValue = .CCLI_UBIGEO.Substring(4, 2)
                    Catch ex As Exception
                        cmbDistrito.SelectedValue = "00"
                    End Try

                    cmbEstado.SelectedValue = .CCLI_ESTADO
                End With






            End If

        End If

    End Sub

#End Region

#Region "Eventos de Controles"

  




    

#End Region

  
    Private Sub cmbTipoDoc_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbTipoDoc.SelectedIndexChanged
        MostrarTipoDocumento()
    End Sub
    Private Sub mostrartipodocumento()
        If cmbTipoDoc.SelectedValue = 2 Then ' selecciono ruc
            lblNombre.Text = "Razon Social"
            lblApellidos.Visible = False
            txtNombre.Visible = False
            txtApellido.Visible = False
            txtNombre.Text = ""
            txtApellido.Text = ""
            txtRazonSocial.Visible = True
        Else
            lblNombre.Text = "Nombre"
            lblApellidos.Visible = True
            txtNombre.Visible = True
            txtApellido.Visible = True
            txtNombre.Text = ""
            txtApellido.Text = ""
            txtRazonSocial.Visible = False
        End If
    End Sub
    Private Sub cmbDepartamento_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbDepartamento.SelectedIndexChanged
        If cmbDepartamento.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            obeRespuesta = oblUbigeo.ObtenerProvincia(dpto)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbProvincia, lstUbigeo, "UGEO_PROVINCIA", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        Else
            cmbProvincia.SelectedValue = "00"
        End If
    End Sub

    Private Sub cmbProvincia_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbProvincia.SelectedIndexChanged
        If cmbProvincia.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            Dim prov As String = DirectCast(cmbProvincia.SelectedItem, UbigeoBE).UGEO_PROVINCIA
            obeRespuesta = oblUbigeo.ObtenerDistrito(dpto, prov)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbDistrito, lstUbigeo, "UGEO_DISTRITO", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        End If
    End Sub

End Class